﻿/**
 * Je Tools jetools.js
 *这都是一些我们在工作中所不可或缺的一些函数，他可以大大方便了我的开发，从而加快我们的工作效率，从此不用天天听着老板唠唠叨叨的催工了！
 *
 * @author jeje <jeje@GoodJe.com>
 * @version 0.1
 * @since 2009 GoodJe.com
 */

(function(){

	var Je = J =
		window.Je = window.J = function() {
		return Je;
	}

	/* 建立JeTools 的函数库 */
	Je.fn = Je.prototype = {

		/**
		* DOM 操作
		*
		*====================================================================*/

		/**
		* 根据类名获取元素
		*
		* @param string className
		* @return array 得到dom元素数组，没有匹配到dom元素则数组大小为0
		*/
		getElementsByClassName : function( className ){
			var temp = new Array();
			var parent = this.nodeType && this.nodeType === 1 ? this : document;
			if ( parent.getElementsByClassName && parent.getElementsByClassName !== arguments.callee ){
				//getElementsByClassName本来是个dom 3级方法
				temp = parent.getElementsByClassName( className );
			} else {
				var eles = parent.getElementsByTagName( "*" );
				if ( eles.length > 0 ){
					for( var i=0; i < eles.length; i++ ) {
						if ( eles[i].nodeType !== 1 ){
							continue;
						}
						var partten = eval( "/ *" + className + " */" );
						if ( partten.test( eles[i].getAttribute( "className" ) ) ){
							temp.push(eles[i]);
							if ( !eles[i].getElementsByClassName ){
								eles[i].getElementsByClassName = Je.getElementsByClassName;
							}
							continue;
						}
					}
				}//if eles.length > 0 end
			}//not exists function getElementsByClassName;
			return temp;
		} //function getElementsByClassName end
	};

	/**
	* 使用工具集
	*
	*/
	Je.fn.tools = Je.prototype.tools =  {

		/**
		* DOM 操作
		*
		*====================================================================*/

		/**
		* 根据类名获取元素
		*
		* @param string className
		* @return array 得到dom元素数组，没有匹配到dom元素则数组大小为0
		*/
		getElementsByClassName: Je.fn.getElementsByClassName,


		/**
		* 字符串处理
		*
		*====================================================================*/

		/**
		* 输出重复的字符串
		*
		* @param mixed repeat 需要重复的字符串或数字
		* @param integer times 重复的次数
		* @param integer length 输出字符串的最长字符数
		* @return string 输出的字符串
		*/
		repeat : function( repeat,times, length ){
			repeat = repeat.toString();
			if ( !times ) {
				return repeat;
			}
			var tmp = "";
			for( var i = 0; i < times; i++ ){
				tmp += repeat;
				if ( length && tmp.length >= length ) break;
			}
			if ( tmp.length > length ) {
				tmp = tmp.substr( 0,length );
			}
			return tmp;
		},//function repeat end

		/**
		 * 格式化浮点数,支持四舍五入
		 *
		 * @param mixed number 需要格式化的浮点数
		 * @param integer dot 小数点后需要保留的位数，默认为2
		 * @return string 输出的字符串
		*/
		formatFloat :  function( number, dot ){
			number = ( number - 0 ).toString();
			dot = dot !== undefined ? dot : 2;
			if ( number.indexOf( "." ) == -1 ){
				number += dot < 1 ? "" : "." + repeat( "0", dot );
			}else {
				if(dot==0){
					number = number.substr( 0, number.indexOf( "." ) )
				}else {
					var length = number.substr( 0, number.indexOf(".") + 1 ).length;
					if ( length < dot )  number += repeat( "0", dot-length );
					else if ( length > dot ) {
						if(number.substr( number.indexOf( "." ) + dot + 1, 1 ) - 0 >= 5){
							number = number.substr( 0, number.indexOf( "." ) + dot + 1 ) - 0 + 1/( 1 + repeat( 0, dot ) );
						}else{
							number = number.substr( 0, number.indexOf( "." ) + dot + 1 );
						}
					}
				}
			}
			return number;
		}//function formatFloat end

 	}//Je.prototype end



	for(var i in Je.fn.tools){
		eval( "Je." + i + " = Je.fn.tools[i]" );
	}


	/*
	* ===================================
	* 正在从寒酸之中建立与完善中,欢迎各位新老手前来补充以及提出意见
	* 我将尽快添加上传组件
	* JeJe <jeje@GoodJe.com> GoodJe.com
	* 2009.8
	* =====================================
	*/

 })();